之前也介紹過合併多個commit為1個
不過之前的介紹方式是透過reset到特定的commit 用 mixed 模式
之後再把因為reset而變成還沒加入暫存區的程式add進暫存區
再commit之後就可以將特定commit之後的版本變為同一個commit
上面這個情境是比較適合同一個branch底下的
今天要介紹的是不同branch merge時可以使用的指令
從remote clone一個master
在該master下,建立一個檔案後commit
再從這個commit建立並且切換到新的分支 iss1
$ git checkout -b iss1
Switched to a new branch 'iss1'
現在的線圖看起來如下
如果我們希望從分支iss1合併回分支master的時候只有一個commit
可以下squash來合併
$ git merge --squash iss1
Updating 3934b8e..7746e08
Fast-forward
Squash commit -- not updating HEAD
test.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
這時候就可以將合併回來的檔案commit出去
commit後的線圖如下
藍色的是分支master
粉紅色是分支iss1
可以看到分支master上只有2個commit
我們把iss1的3個commit在合併到master的過程,轉為master上的1個commit
而且不是跟一般合併一樣,會產生一個合併的分支圖